package com.team622.shop.user.model.dto;

import lombok.Data;

/**
 * 会员登录数据传输对象
 * <p>
 * 用于封装前端传递的登录相关信息，支持手机号密码登录和微信授权登录
 * <p>
 * 安全注意事项：
 * 1. 密码应该在前端加密后再传输
 * 2. 微信code应该有时效性(通常5分钟)
 * 3. 登录失败次数应有限制
 * <p>
 * 使用场景：
 * 1. 手机号+密码登录
 * 2. 微信小程序授权登录
 * <p>
 * 使用示例：
 * // 手机号登录
 * {
 * "mobile": "13800138000",
 * "password": "encryptedPassword"
 * }
 * <p>
 * // 微信登录
 * {
 * "code": "微信授权码"
 * }
 * <p>
 * 初学者指南：
 * - 两种登录方式互斥，优先使用微信code登录
 * - 密码建议使用RSA等非对称加密
 *
 * @author team622
 * @since 2025-07-02
 */
@Data
public class MemberLoginDTO {
    /**
     * 手机号码，用于账号密码登录
     * 格式要求：
     * - 11位数字
     * - 符合中国手机号格式
     */
    private String mobile;

    /**
     * 登录密码
     * 要求：
     * - 建议前端加密后传输
     * - 长度8-20位
     * - 包含字母和数字
     */
    private String password;

    /**
     * 微信登录的code
     * 说明：
     * - 来自微信小程序wx.login()接口
     * - 用于换取openid和session_key
     * - 有效期5分钟
     */
    private String code;
}
